Virtual machines can be provided in a computer to enhance flexibility and performance. A virtual machine typically refers to some arrangement of components (software and/or hardware) for virtualizing or emulating an actual computer, where the virtual machine can include an operating system and software applications. Virtual machines can allow different operating systems to be deployed on the same computer, such that applications written for different operating systems can be executed in different virtual machines (that contain corresponding operating systems) in the same computer. Moreover, the operating system of a virtual machine can be different from the host operating system that may be running on the computer on which the virtual machine is deployed.
In addition, a greater level of isolation is provided between or among applications running in different virtual machines. In some cases, virtual machines also allow multiple applications to more efficiently share common resources (processing resources, input/output or I/O resources, and storage resources) of the computer.
For enhanced performance, virtual machines can be provided on multiple computers that are interconnected by a network. In some implementations, an automated placement controller has been provided to determine computers that the virtual machine is to be deployed on. Based on predetermined criteria, the placement controller is able to migrate at least some of the virtual machines across different computers.
In some cases, a placement controller may not be aware of one or more criteria that the placement controller should consider when performing migration of virtual machines. As a result, the placement controller can select a placement of virtual machines that a user or administrator may be dissatisfied with. Conventionally, when this happens, the user or administrator has to manually determine why the placement controller's proposed placement of virtual machines is unsatisfactory and manually modify the placement controller's criteria, to prevent it from repeatedly proposing the same placement of virtual machines. Such manual analysis is time-intensive and is prone to error.